package study.Day_4;

/**
 * @Classname: Day_four
 * @Description: leetcode第四题
 * @Date: 2021/9/18
 * @Author: huwei
 */

import java.lang.reflect.Array;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * 给定两个大小分别为 m 和 n 的正序（从小到大）数组 nums1 和 nums2。
 * 请你找出并返回这两个正序数组的 中位数 。
 * <p>
 * <p>
 * <p>
 * 示例 1：
 * 输入：nums1 = [1,3], nums2 = [2]
 * 输出：2.00000
 * 解释：合并数组 = [1,2,3] ，中位数 2
 * <p>
 * 示例 2：
 * 输入：nums1 = [1,2], nums2 = [3,4]
 * 输出：2.50000
 * 解释：合并数组 = [1,2,3,4] ，中位数 (2 + 3) / 2 = 2.5
 * <p>
 * 示例 3：
 * 输入：nums1 = [0,0], nums2 = [0,0]
 * 输出：0.00000
 * <p>
 * 示例 4：
 * 输入：nums1 = [], nums2 = [1]
 * 输出：1.00000
 * <p>
 * 示例 5：
 * 输入：nums1 = [2], nums2 = []
 * 输出：2.00000
 */
public class Day_four {

    public String getCenterNum(int[] nums1, int[] nums2) {
        int[] ints = mergeArray(nums1, nums2);
        int[] sortingArray = bubbleSorting(ints);
        int center =  sortingArray.length/2;
        // 由于数组长度从0开始,所以下标要减1
        if (sortingArray.length % 2 == 0) {
            int centerNum = sortingArray[center-1]+sortingArray[center];
            BigDecimal bigDecimal = new BigDecimal(String.valueOf(centerNum));
            BigDecimal divide = bigDecimal.divide(new BigDecimal("2"), 2,BigDecimal.ROUND_DOWN);
            return divide.toString();
        }else{
            int centerNum = sortingArray[center];
            return String.valueOf(centerNum);
        }
    }

    /**
     * 合并两个数组
     *
     * @param nums1
     * @param nums2
     * @return
     */
    public int[] mergeArray(int[] nums1, int[] nums2) {
        // 创建一个容量是num1+num2的数组
        int[] c = new int[nums1.length + nums2.length];
        int count = 0;
        // 循环num1,把数据放进c中
        for (int i = 0; i < nums1.length; i++) {
            c[i] = nums1[i];
            count++;
        }
        // 跟着把num2的数据放进c中
        for (int j : nums2) {
            c[count] = j;
            count++;
        }
        return c;
    }

    /**
     * 冒泡排序
     */
    public int[] bubbleSorting(int[] c) {
        for (int i = 0; i < c.length; i++) {
            for (int j = 0; j < c.length - i - 1; j++) {
                if (c[j] > c[j + 1]) {
                    int num;
                    num = c[j];
                    c[j] = c[j + 1];
                    c[j + 1] = num;
                }
            }
        }
        return c;
    }
}
